package Day14;

/**
 * 集合
 */
public class Day14 {
    //可以存放多个数据的容器
    //多种数据结构可供选择 具体总类有很多种 特性各不相同 在开放实践中按需选择
    //接口 Collection 定义集合相关的操作方法
    //常见子接口
    //List 可重复且有序集
    //Set 不可重复集
    //元素是否重复 取决于元素的equals方法比较结果
    //集合只能存放引用类型元素 只要是对象就行
    //List 如ArrayList
    //放元素arr.add("three");
    //Integer.valueOf(123) 基本类型会触发自动装箱功能 放入集合中
    //Set 如HashSet
    //存放元素时无序并非真的无序 实际上是依靠算法添加的 顺序是确定的 只是与输入顺序不同 并不是随机存储

    //int size=collection.size();
    //集合元素个数 返回值类型为int类型 若元素个数超过int最大值 则返回值永远是int的最大值 个数会失真 但是还是能添加元素的


    //集合持有元素的引用
    //<>泛型 约束集合里元素的类型 类似于数组规定基本类型
    //在ArrayList类的定义中 <E>中的E为泛型参数 在创建对象时E默认为Object类型
    //若更改E为指定的类型如Point 则方法的参数类型也会变为Point 返回值类型也会改为Point
    //JDK的lts版本 长期支持版 较稳定

    //集合的遍历
    //不依靠下标遍历 或产生位置有可能不同,数量不足等问题

    //增强型for循环(也称为新循环)
    //该循环不通用于传统循环的工作 只能用于遍历集合或数组
    //语法
    //for(数据类型 e : 集合/数组){}

    //List集合 支持随机访问
    //又称为线性表
    //有两个常用的实现类1 ArrayList适合随机访问  2 LinkList适合改动
    //LinkList 链表 每一个元素是独立的个体 四散在内存中 每个元素两侧有上一个和下一个元素的地址 通过此方法彼此连接
    //适合增删 只需要改变元素插入处的地址即可 但是不适合遍历 需要从某一个头开始一点点找地址
    //注意 增删快只适合元素少 或是首尾增删 或是靠近首尾位置的增删块
    //若链表很庞大 其效率还是很低 因为要先查询到目标元素在哪个位置




}
